iT邦幫忙

0

https://ithelp.ithome.com.tw/upload/images/20200928/20129565dv2NrbiXQw.png

Nutanix Calm DSL和其他類似的DSL可被定義為:「特定領域語言(DSL)是專用於特定應用程序域的計算機語言。這與通用語言(GPL)相反,後者廣泛適用於各個領域。」

利用一些例子就能夠更清楚的了解Nutanix Calm DSL,它是簡化特定網域或產品的編程任務的一種方式。Nutanix Calm DSL 是專門為與 Nutanix Calm 產品一起編程使用的,從編寫自定義應用程序的角度來看,它不會干擾與影響不同系統的交互操作。

從使用角度來看,利用通用GPL語言可以描述產品或技術特有的故意缺失的功能。因此它更適合與多種技術語言合作。
列舉幾個通用程式語言:

  • HTML(標記)
  • Python(編程)
  • C#(編程)

如何使用Nutanix Calm DSL?

Nutanix Calm DSL官方頁上有如何在Mac OS X上安裝DSL的教學步驟。本編文章將要示範以Ubuntu Linux系統進行示範,開發系統基於配置如下:

  • Ubuntu Linux 19.10
  • 「必備」開發工具,例如:Git、Python 3.7、代碼編輯器
  • 郵遞員進行 API 測試
  • “Oh My Zsh” 因為我喜歡終端機隨時告訴我發生了什麼事

不需要特別的設置即可開始,Calm DSL 簡便的裝載方式就是要讓大家能夠「開箱即用」,排除任何異常或專一的依賴關係。現在就安裝,以下步驟能讓您在Linux終端上舒適地瀏覽。

在Ubuntu上安裝Nutanix Calm DSL

Local Binary

我們需要的第一件事是Nutanix開發「資料」的位置。
https://ithelp.ithome.com.tw/upload/images/20200928/20129565QySEFFmkGb.png
我們需要透過安裝Calm DSL依賴項(如果尚未存在)來確保它們已得到滿足。這裡還指定了一些其他軟體包,這些軟件包未包含在文檔中,但它們對於這種性質的其他任務有一定程度的必須性。
https://ithelp.ithome.com.tw/upload/images/20200928/20129565Z5Jb0sW32f.png
安裝依賴項後,需要裝載 Calm DSL 本身。注意現在我們正在使用SSH克隆Calm DSL 存儲庫,但是在某些系統上可能需要通過HTTPS進行克隆。
https://ithelp.ithome.com.tw/upload/images/20200928/20129565qXQASRMBTj.png
我們需要創建一個Python3虛擬環境(venv)並將其激活。請注意(venv)註釋,該註釋告訴我們我們正在Python虛擬環境中工作(本節末尾的圖片)。
https://ithelp.ithome.com.tw/upload/images/20200928/20129565nFo1FQmYt9.png

https://ithelp.ithome.com.tw/upload/images/20200928/201295654tDLHpC3rw.png
雖然Nutanix Calm DSL提供了一些測試,但在本文中我們先略過測試步驟,下一步是設置開發環境。
https://ithelp.ithome.com.tw/upload/images/20200928/20129565rHds0fSSP9.png
https://ithelp.ithome.com.tw/upload/images/20200928/20129565Vg4EtlFdrF.png
完成創建本機開發版本,並允許在本機運行Calm DSL。如果您只打算在本機使用Calm DSL,可以跳至「初始化和測試」部分。

Docker 容器內的DSL Calm

在當今的環境中,最常使用容器化系統執行開發、測試和生產任務。儘管本文不會詳細介紹什麼是容器化,但將快速帶大家瀏覽如何運行命令以安裝Docker,並且在 Ubuntu 系統上構建Calm DSL容器。
注意:這些命令直接從Linux的Docker安裝頁面獲取。該頁面上有一個步驟指定瞭如何以非root用戶身份運行Docker,但此處未包括該步驟。

遵循以下步驟:

  • 刪除各種Docker軟件包的現有版本
  • 確保軟體包緩存是最新的版本
  • 安裝 Docker 之前先安裝一些依賴項
  • 添加 Docker 的官方 GPG 密鑰(根據該密鑰檢查所有下載的Docker文件的有效性)
  • 驗證正確的密鑰
  • 添加官方Docker存儲庫
  • 再次更新程序包緩存,然後安裝Docker Engine
  • 運行快速測試以確保Docker正常運行
    https://ithelp.ithome.com.tw/upload/images/20200928/201295651huxPfunaX.png
    現在已經安裝了Docker,可以使用建構腳本創建Calm DSL容器。
    在系統上,必須手動啟動並啟用** docker **保護程序,如下所示(這也確保Docker將在重啟後啟動):
    https://ithelp.ithome.com.tw/upload/images/20200928/201295652heHSd92U5.png
    這只是構建docker容器的一種情況,如下所示。
    https://ithelp.ithome.com.tw/upload/images/20200928/20129565qGb1RydKbe.png
    https://ithelp.ithome.com.tw/upload/images/20200928/20129565aFfALgrQYo.png
    安裝依賴項並建構容器後,我們現在可以運行容器本身:
    https://ithelp.ithome.com.tw/upload/images/20200928/201295656ZUqPXqrwB.png
    作為Docker容器的最後一步,我們可以簡單地運行容器:
    https://ithelp.ithome.com.tw/upload/images/20200928/20129565B0QZFEHqlW.png

初始化與測試

有了可用的開發環境或docker容器,現在能夠初始化 Calm DSL,與Calm DSL相同的目錄中或在您的容器中,運行下面的命令並按照提示進行操作。
https://ithelp.ithome.com.tw/upload/images/20200928/20129565uClRa0xzvp.png
如下面的螢幕截圖所示,我們提供了有關環境的一些信息,包括Prism Central(PC)實例的IP地址,根據我們使用的項目。此示例中沒有erroe,就能夠開始使用DSL!
https://ithelp.ithome.com.tw/upload/images/20200928/20129565zuWJqxEoaT.png

快速用法示例

安裝好Nutanix Calm DSL,並準備好開發環境,其中最基本示例–列出Prism Central實例中可用的Calm藍圖。進行如下所示。
https://ithelp.ithome.com.tw/upload/images/20200928/20129565thoynzF9OT.png
執行此命令將返回PC實例中所有可用藍圖的列表以及相關藍圖的訊息。
注意:為了允許正確的格式設置,下面的螢幕截圖已裁剪了一些內容。 在實際環境中執行此命令將顯示完整的藍圖描述,UUID等。
https://ithelp.ithome.com.tw/upload/images/20200928/201295651dRlr4kBGv.png
我們列出了所有藍圖及其詳細訊息。Nutanix Calm DSL還可以做什麼?

初始化新的「Calm藍圖」

透過設置和基本用法示範,現在開始使用Calm DSL來創建新的藍圖。Calm DSL背後的工程團隊為了簡化使用者流程,內置創建演示藍圖。執行以下命令。
https://ithelp.ithome.com.tw/upload/images/20200928/20129565dz2D4egCJb.png
https://ithelp.ithome.com.tw/upload/images/20200928/201295655E8tLOsUxb.png
這是什麼情況?Calm DSL 創建了一個名為 HelloBlueprint 的文件,並在該文件夾中創建blueprint.py 文件,以及在 Prism Central 實例上建立 Calm 藍圖所需的所有附帶文件。

目前該藍圖僅在我們的本機 / 開發系統上,尚未上傳到 Prism Central。這是一部分原因,如果再次運行「calm get bps」,則不會看到HelloBlueprint。可以重新編輯blueprint.py文件和其他隨附文件,使藍圖完全滿足我們的需球。完成後就可以創建 Prism Central 上傳JSON規範。讓我們快速看一下blueprint.py文件。

blueprint.py –快速查看

關於生成 blueprint.py 文件的一大優點是,它在自身內部記錄了很多內

  • 一開始就導入所需的Python模組
  • 創建具有用戶名「centos」和「keys / centos_pub」中包含的公鑰的SSH憑證。
  • 定義Calm配置,該配置指定Calm可以在何處查找此藍圖的磁盤映像。
  • 定義了Calm「服務」操作,即Calm在部署應用程序VM時將要經歷的任務。包括自定義操作,該操作可以在應用程序啟動並運行後的任何時間運行。
  • 以類似的方式定義在應用程序部署期間運行的軟件包。在此範例中,軟件包是創建或銷毀應用程序時運行的安裝和卸載程序。
  • 定義了藍圖的單一VM規範,即vCPU、RAM和磁盤的數量,以及創建我們先前定義的CentOS憑據的Cloud-Init腳本。
  • VM本身是根據以前的VM規範定義的。好處是我們可以指定一組規範,這些規範可以應用於多個VM,例如所有具有相同規範的VM,這很在在群集服務的應用程序使用。
  • 定義本機的主要部署,部署繼承了先前創建的包裝和基材定義。
  • 將創建應用程序概要文件,包括可由用戶在運行時指定的項目,例如概要文件變量。
  • 最後一步,將主要藍圖項目定義為“藍圖”類型的實例。該藍圖實例具有使用先前步驟中的憑據創建的屬性。

blueprint.py –上傳

現在對如何將藍圖編寫為Python代碼有了一個更好的想法,可以生成準備上傳的 JSON 藍圖。
https://ithelp.ithome.com.tw/upload/images/20200928/20129565OVzq9rJrUj.png
該命令的輸出是可以上傳到Prism Central的JSON。該方法對於將完整的JSON規範傳遞到單獨的命令中非常有用,例如,Prism Central v3 API調用可從第三方應用程序創建藍圖。
不過在範例中,將Calm DSL用於所有內容,因此讓我們以「適當」的方式上傳新藍圖。以下命令顯示瞭如何執行此操作。請注意,「 – name」的值必須唯一且尚未使用。
https://ithelp.ithome.com.tw/upload/images/20200928/20129565TjzIoNeG9Y.png
查看結果,可以看到我們的藍圖已創建,並且已自動設置為ACTIVE狀態。這表明該藍圖已準備好啟動。
https://ithelp.ithome.com.tw/upload/images/20200928/20129565dYaw4elqW3.png
如果需要,我們現在可以登錄Prism Central檢查是否已經創建藍圖,但是留在終端中並在那裡完成最後的步驟。
Calm DSL GitHub存儲庫為例,可以使用DSL本身來獲得各種幫助。
https://ithelp.ithome.com.tw/upload/images/20200928/20129565dtle9YWkHJ.png
可以使用「 –name」參數按名稱搜索藍圖。從邏輯上講,我們現在可以使用此命令查找新的藍圖。
https://ithelp.ithome.com.tw/upload/images/20200928/20129565ObKCQdKDhG.png
讓我們看看結果!
https://ithelp.ithome.com.tw/upload/images/20200928/20129565RxNsWe60VP.png

blueprint.py –啟動!

最後一步!值得考慮的是如果藍圖只是放在那兒而不被使用,那麼它就喪失意義了。考讓我們透過啟動藍圖並啟動並執行範例應用程序來結束。
在今天這篇文章(或您的Calm DSL容器)中使用的同一終端中,我們將使用以下命令。這也顯示了啟動應用程序後,如何獲取有關應用程序的訊息。因為已經在集群上執行了多次,所以最後使用數字不同,這樣就不會出現應用程序名稱衝突的情況。
https://ithelp.ithome.com.tw/upload/images/20200928/20129565D9SBLfLwHE.png
https://ithelp.ithome.com.tw/upload/images/20200928/20129565kJLmB4a5r7.png
https://ithelp.ithome.com.tw/upload/images/20200928/20129565wTebt8kI2K.png

總結

這僅涉及我們可以使用Calm DSL所做的工作,因此,下一次我們將更深入地研究一下,並從頭開始創建自己的自定義藍圖。
希望對Nutanix Calm DSL的簡要介紹提供了另一個示例,說明如何通過代碼操縱Nutanix平台和生態系統。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言